package web

import (
	"fmt"
	"ksd-social-api/commons/base/controller"
	"ksd-social-api/modules/channel/model/context"
	"ksd-social-api/modules/channel/service"
	"ksd-social-api/utils/rdb"
)

type AdminChannelController struct {
	controller.BaseController
}

var adminChannelService = service.AdminChannelService{}

/*
*
查询栏目信息
*/
func (web *AdminChannelController) FindChannels() {
	// 1: 定义一个接受分页信息的上下文
	channelSearchContext := context.ChannelSearchContext{}
	// 2: 开始绑定参数
	web.BindJSON(&channelSearchContext)
	channelSearchContext.SystemId = web.GetSystemId()
	web.Ok(adminChannelService.FindChannelListAndPage(channelSearchContext))
}

/*
*
修改状态
*/
func (web *AdminChannelController) UpdateFieldByCodeId() {
	// 1: 定义一个接受分页信息的上下文
	channelUpdateContext := context.ChannelUpdateContext{}
	// 2: 开始绑定参数
	web.BindJSON(&channelUpdateContext)
	channelUpdateContext.SystemId = web.GetSystemId()
	web.Ok(adminChannelService.UpdateFieldByCodeId(channelUpdateContext))
}

/*
*
查询栏目信息
*/
func (web *AdminChannelController) UpdateFieldById() {
	// 1: 定义一个接受分页信息的上下文
	channelUpdateContext := context.ChannelUpdateContext{}
	// 2: 开始绑定参数
	web.BindJSON(&channelUpdateContext)
	channelUpdateContext.SystemId = web.GetSystemId()
	// 清空缓存
	cacheKey := fmt.Sprintf("SYSTEM:FindChannels:LIST:%d", web.GetSystemId())
	rdb.RdbDel(cacheKey)
	web.Ok(adminChannelService.UpdateFieldById(channelUpdateContext))
}

/*
*
查询栏目信息
*/
func (web *AdminChannelController) DelFieldById() {
	// 1: 定义一个接受分页信息的上下文
	channelUpdateContext := context.ChannelUpdateContext{}
	// 2: 开始绑定参数
	web.BindJSON(&channelUpdateContext)
	channelUpdateContext.SystemId = web.GetSystemId()
	web.Ok(adminChannelService.UpdateFieldById(channelUpdateContext))
}

/*
*
保存栏目
*/
func (web *AdminChannelController) SaveUpdateChannel() {
	// 1: 定义一个接受分页信息的上下文
	channelContext := context.ChannelContext{}
	// 2: 开始绑定参数
	web.BindJSON(&channelContext)
	channelContext.SystemId = web.GetSystemId()
	channelContext.SystemName = web.GetSystemName()
	// 清空缓存
	cacheKey := fmt.Sprintf("SYSTEM:FindChannels:LIST:%d", web.GetSystemId())
	rdb.RdbDel(cacheKey)

	web.Ok(adminChannelService.SaveUpdateChannel(channelContext))
}

/*
*
保存兑换码
*/
func (web *AdminChannelController) SaveUpdateCodes() {
	// 1: 定义一个接受分页信息的上下文
	channelCodeContext := context.ChannelCodeContext{}
	// 2: 开始绑定参数
	web.BindJSON(&channelCodeContext)
	channelCodeContext.SystemId = web.GetSystemId()
	web.Ok(adminChannelService.SaveUpdateChannelCode(channelCodeContext))
}

/*
*
查询栏目兑换码信息
*/
func (web *AdminChannelController) FindCodes() {
	// 1: 定义一个接受分页信息的上下文
	codeSearchContext := context.CodeSearchContext{}
	// 2: 开始绑定参数
	web.BindJSON(&codeSearchContext)
	codeSearchContext.SystemId = web.GetSystemId()
	web.Ok(adminChannelService.FindChannelCodePage(codeSearchContext))
}

/*
*
查询栏目兑换码信息
*/
func (web *AdminChannelController) BatchSaveOrders() {
	// 1: 定义一个接受分页信息的上下文
	batchUsersContext := context.BatchUsersContext{}
	// 2: 开始绑定参数
	web.BindJSON(&batchUsersContext)
	batchUsersContext.SystemId = web.GetSystemId()
	batchUsersContext.SystemName = web.GetSystemName()
	web.Ok(adminChannelService.SaveUserChannelOrder(batchUsersContext))
}

/**
 * @author feige
 * @date 2023-10-10
 * @version 1.0
 * @desc  根据id删除
 */
func (web *AdminChannelController) DelById() {
	id, _ := web.ParseParamUint64("id")
	web.Ok(adminChannelService.DelById(id, web.GetSystemId()))
}

/**
 * @author feige
 * @date 2023-10-10
 * @version 1.0
 * @desc  根据用户id查询用户明细
 */
func (web *AdminChannelController) DelCodeById() {
	id, _ := web.ParseParamUint64("id")
	web.Ok(adminChannelService.DelCodeById(id, web.GetSystemId()))
}

/*
*
复制
*/
func (web *AdminChannelController) CopyData() {
	id, _ := web.ParseParamUint64("id")
	web.Ok(adminChannelService.CopyData(id, web.GetSystemId()))
}
